/*
 * ModeloNgramas.h
 *
 *  Created on: 26 Nov 2014
 *      Author: leo
 */

#ifndef MODELONGRAMAS_H_
#define MODELONGRAMAS_H_
#include "Parser.h"
#include "unigrama.h"
#include "bigrama.h"
#include "trigrama.h"


class ModeloNgramas{



public:
	static void crearModeloDeNgramasDelArchivo(char* ruta);
	static void dumpEstructurasDeDatos();

	static unsigned long int obtenerFrecuenciaUnigrama(string termino);
	static unsigned long int obtenerFrecuenciaBigrama(string termino1,string termino2);
	static unsigned long int obtenerFrecuenciaTrigrama(string termino1,string termino2,string termino3);

	static unsigned long int obtenerNroDeUnigramas();
	static unsigned long int obtenerNroDeBigramas();
	static unsigned long int obtenerNroDeTrigramas();

	static unsigned long int obtenerNroDeUnigramasConFreq(int freq);
	static unsigned long int obtenerNroDeBigramasConFreq(int freq);
	static unsigned long int obtenerNroDeTrigramasConFreq(int freq);

	static unsigned long int obtenerNroDeUnigramasDistintosConFreq(string termino,int freq); //A*
	static unsigned long int obtenerNroDeBigramasDistintosConFreq(string termino1,string termino2,int freq); //AB*

	static unsigned long int obtenerNroDeTrigramasDistintos(string termino); //*B*
	static unsigned long int obtenerNroDeUnigramasDistintosAntes(string termino); //*C




private:
	static unsigned long int nroUnigramas;
	static Parser par;
	static void unificarArchivosTemporales();
	static unsigned long int obtenerFrecuenciaDesdeArchivo(string termino, const char* rutaArchivo );
	static unsigned long int obtenerDatoDesdeArchivo(string representacion,int ngramas, int nroDeDato, const char* rutaArchivo);
};


#endif /* MODELONGRAMAS_H_ */
